import vnode from './vnode'
import createElement from './createElement'

export default function (oldVNode, newVNode) {
  // 判断传入的第一个参数，是DOM节点还是虚拟节点？
  if (oldVNode.sel === '' || oldVNode.sel === undefined) {
    // 传入的第一个参数是DOM节点，此时要包装成虚拟节点
    oldVNode = vnode(
      oldVNode.tagName.toLowerCase(),
      {},
      [],
      undefined,
      oldVNode
    )
  }

  // 判断oldVNode和newVNode是不是同一个节点
  if (oldVNode.key === newVNode.key && oldVNode.sel === newVNode.sel) {
    console.log('同一个节点，进行精细化比较')
  } else {
    console.log('不是同一个节点，暴力插入新的，删除旧的')
    // 之前是在 createElement 中实现上树的
    // createElement(newVNode, oldVNode.elm)
    let newVNodeElm = createElement(newVNode)
    // 插入到老节点之前
    if (oldVNode.elm.parentNode && newVNodeElm) {
      oldVNode.elm.parentNode.insertBefore(newVNodeElm, oldVNode.elm)
    }
    // 删除老节点
    oldVNode.elm.parentNode.removeChild(oldVNode.elm)
  }
}
